#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    int arr1[10][10] = { 0 };
    int arr2[10][10] = { 0 };
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            scanf("%d", &arr1[i][j]);
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            scanf("%d", &arr2[i][j]);
        }
    }
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (arr1[i][j] == arr2[i][j])
            {
                count++;
            }
        }
    }
    if (count == n * m)
    {
        printf("Yes\n");
    }
    else
    {
        printf("No\n");
    }
    return 0;
}
//#include <stdio.h>
//
//int function(int n)
//{
//    int sum = 1;
//    for (int i = 1; i < n; i++)
//    {
//        sum += i;
//    }
//    return sum;
//}
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int arr[10][10] = { 0 };
//    for (int i = 0; i < n; i++)
//    {
//        for (int j = 0; j < n; j++)
//        {
//            scanf("%d", &arr[i][j]);
//        }
//    }
//    int count = 0;
//    for (int i = 0; i < n; i++)
//    {
//        for (int j = 0; j < n; j++)
//        {
//            if (i > j && arr[i][j] == 0)
//            {
//                count++;
//            }
//        }
//    }
//    int ret = function(n);
//    if (count == ret)
//    {
//        printf("YES\n");
//    }
//    else
//    {
//        printf("NO");
//    }
//    return 0;
//}
//#include <stdio.h>
//
//int Fac(int n,int sum)
//{
//	while (n > 1)
//	{
//		sum += n / 2;
//		int m = n % 2;
//		n = n / 2 + m;
//	}
//	return sum;
//}
//int main()
//{
//	int n = 20;
//	int sum = 0;
//	sum += n / 1;
//	int ret = Fac(n/1,sum);
//	printf("%d", ret);
//	return 0;
//}